# -*-coding:utf-8-*-
"""
@project: python-project
@Time: 2024/1/1014:33
@Auth: Loneliness_Burial
@File: 跳动小游戏.py
@Motto: 深情不改必坠死海
"""

import random
import pygame
import sys

pygame.init()  # 初始化pygame
size = width, height = 320 * 4, 240 * 3.0  # 设置窗口大小
black = 0, 0, 0  # 设置背景色
screen = pygame.display.set_mode(size)  # 显示窗口
ball_n = random.randint(15, 23)  # 小球数量
speed_list = []  # 小球速度列表
for _ in range(ball_n):  # 生成小球速度列表
    spe = random.uniform(1, 7)  # 生成小球速度
    speed_list.append([spe, spe])  # 将小球速度添加到列表中
ball_list, ballrect_list = list(), list()  # 小球列表，小球矩形列表
imgs = ['1.png', '2.png', '3.png']  # 小球图片列表
for _ in range(ball_n):  # 生成小球列表
    ball = pygame.image.load(imgs[random.randint(0, 2)])  # 随机选择小球图片
    ball_list.append(ball)  # 将小球添加到小球列表中
    ball_width, ball_height = ball.get_rect().width, ball.get_rect().height  # 获取小球宽度和高度
    init_rect = ball.get_rect().move(random.randint(ball_width, width - ball_width),
                                     random.randint(ball_height, height - ball_height))  # 生成小球初始位置
    ballrect_list.append(init_rect)  # 将小球初始位置添加到小球矩形列表中

while 1:
    for event in pygame.event.get():  # 获取事件
        if event.type == pygame.QUIT:  # 判断事件是否为退出事件
            sys.exit()  # 退出程序
    for i in range(ball_n):
        ball, ballrect, speed = ball_list[i], ballrect_list[i], speed_list[i]  # 获取小球，小球矩形，小球速度
        update_ballrect = ballrect.move(speed)  # 更新小球矩形
        ballrect_list[i] = update_ballrect  # 将更新后的小球矩形添加到小球矩形列表中
        # 处理边界
        if update_ballrect.left < 0 or update_ballrect.right > width:  # 判断小球是否到达左右边界
            speed[0] = -speed[0]  # 将小球水平速度取反
        if update_ballrect.top < 0 or update_ballrect.bottom > height:  # 判断小球是否到达上下边界
            speed[1] = -speed[1]  # 将小球垂直速度取反
    screen.fill(black)  # 填充背景色
    for ball, update_ballrect in zip(ball_list, ballrect_list):  # 遍历小球列表和小球矩形列表
        screen.blit(ball, update_ballrect)  # 将小球绘制到窗口中
    pygame.display.flip()  # 更新全部显示
